package net.esj.basic.pojo;

import java.io.Serializable;
import java.util.Collection;

public interface TreeStructure {

	public static final Integer TREE_LOAD_TYPE_EAGER= 1;//完全加载树
	public static final Integer TREE_LOAD_TYPE_ON_CLICK_PARENT = 2;//点击父节点时加载下层
	
	/**
	 * 节点编号
	 * @return
	 */
	Serializable getNodeId();
	
	/**
	 * 获得父节点
	 * @return
	 */
	TreeStructure getParentNode();
	
	 /**
	  * 获得子节点
	  * @return
	  */
	<T  extends TreeStructure > Collection<T> getChildNodes();
	 
	 /**
	  * 获得显示
	  * @return
	  */
	 String getNodeTitle();
	 
	 /**
	  * 树状结构的图标
	  * @return
	  */
	 String getNodeClsIcon();
	 
	 /**
	  * 是否有子节点
	  * @return
	  */
	 Boolean hasChildNode();
	 
	 /**
	  * 节点加载方式
	  * @return
	  */
	 Integer getNodeLoadType();
	 
	 /**
	  * 是否展开此节点
	  * @return
	  */
	 Boolean isNodeExpansion();
	 
	 /**
	  * 是否有checkbox框
	  * @return
	  */
	 Boolean hasCheckBox();
	 
	 /**
	  * 是否级联选中checkbox
	  * eg ： 该选项只在hasCheckBox 为true时生效
	  * @return
	  */
	 Boolean isSelectCascade();
}
